/**
 * 团购优惠相关API接口
 * 为后期连接后端接口做准备
 */

// 模拟API基础配置
const API_BASE_URL = 'https://api.example.com';

// 模拟API请求方法
const request = (url, options = {}) => {
  return new Promise((resolve, reject) => {
    // 这里后期会替换为真实的网络请求
    // 例如使用 uni.request 或 axios
    setTimeout(() => {
      resolve({
        code: 200,
        data: {},
        message: 'success'
      });
    }, 1000);
  });
};

/**
 * 团购优惠API接口
 */
export const groupBuyAPI = {
  /**
   * 获取团购优惠列表
   * @param {Object} params - 查询参数
   * @param {number} params.page - 页码
   * @param {number} params.pageSize - 每页数量
   * @param {string} params.status - 状态筛选
   * @param {string} params.keyword - 关键词搜索
   * @returns {Promise} 返回团购列表数据
   */
  getGroupBuyList(params = {}) {
    const { page = 1, pageSize = 10, status = 'active', keyword = '' } = params;
    
    // 后期会替换为真实的API调用
    // return request(`${API_BASE_URL}/group-buy/list`, {
    //   method: 'GET',
    //   data: { page, pageSize, status, keyword }
    // });
    
    // 模拟返回数据结构
    return Promise.resolve({
      code: 200,
      data: {
        list: [],
        total: 0,
        page,
        pageSize,
        hasMore: false
      },
      message: 'success'
    });
  },

  /**
   * 获取团购优惠详情
   * @param {number} id - 团购ID
   * @returns {Promise} 返回团购详情数据
   */
  getGroupBuyDetail(id) {
    if (!id) {
      return Promise.reject(new Error('缺少团购ID'));
    }
    
    // 后期会替换为真实的API调用
    // return request(`${API_BASE_URL}/group-buy/detail/${id}`, {
    //   method: 'GET'
    // });
    
    // 模拟返回数据结构
    return Promise.resolve({
      code: 200,
      data: {
        id,
        title: '',
        subtitle: '',
        description: '',
        image: '',
        originalPrice: 0,
        currentPrice: 0,
        startDate: '',
        endDate: '',
        contactPhone: '',
        notes: '',
        company: '',
        createTime: '',
        status: 'active'
      },
      message: 'success'
    });
  },

  /**
   * 购买团购优惠
   * @param {Object} params - 购买参数
   * @param {number} params.id - 团购ID
   * @param {number} params.quantity - 购买数量
   * @param {string} params.contactInfo - 联系信息
   * @returns {Promise} 返回购买结果
   */
  purchaseGroupBuy(params) {
    const { id, quantity = 1, contactInfo } = params;
    
    if (!id) {
      return Promise.reject(new Error('缺少团购ID'));
    }
    
    // 后期会替换为真实的API调用
    // return request(`${API_BASE_URL}/group-buy/purchase`, {
    //   method: 'POST',
    //   data: { id, quantity, contactInfo }
    // });
    
    // 模拟返回数据结构
    return Promise.resolve({
      code: 200,
      data: {
        orderId: 'ORDER_' + Date.now(),
        status: 'pending',
        message: '购买成功，请等待商家确认'
      },
      message: 'success'
    });
  },

  /**
   * 获取我的团购订单
   * @param {Object} params - 查询参数
   * @param {number} params.page - 页码
   * @param {number} params.pageSize - 每页数量
   * @param {string} params.status - 订单状态
   * @returns {Promise} 返回订单列表数据
   */
  getMyGroupBuyOrders(params = {}) {
    const { page = 1, pageSize = 10, status = '' } = params;
    
    // 后期会替换为真实的API调用
    // return request(`${API_BASE_URL}/group-buy/orders`, {
    //   method: 'GET',
    //   data: { page, pageSize, status }
    // });
    
    // 模拟返回数据结构
    return Promise.resolve({
      code: 200,
      data: {
        list: [],
        total: 0,
        page,
        pageSize,
        hasMore: false
      },
      message: 'success'
    });
  },

  /**
   * 取消团购订单
   * @param {string} orderId - 订单ID
   * @returns {Promise} 返回取消结果
   */
  cancelGroupBuyOrder(orderId) {
    if (!orderId) {
      return Promise.reject(new Error('缺少订单ID'));
    }
    
    // 后期会替换为真实的API调用
    // return request(`${API_BASE_URL}/group-buy/orders/${orderId}/cancel`, {
    //   method: 'POST'
    // });
    
    // 模拟返回数据结构
    return Promise.resolve({
      code: 200,
      data: {
        orderId,
        status: 'cancelled'
      },
      message: '订单已取消'
    });
  }
};

/**
 * 数据模型定义
 * 为后期接口对接提供数据结构参考
 */
export const dataModels = {
  /**
   * 团购优惠数据结构
   */
  groupBuyDeal: {
    id: 'number',           // 团购ID
    title: 'string',        // 标题
    subtitle: 'string',     // 副标题
    description: 'string',  // 描述
    image: 'string',        // 图片URL
    originalPrice: 'number', // 原价
    currentPrice: 'number',  // 现价
    startDate: 'string',    // 开始时间
    endDate: 'string',      // 结束时间
    contactPhone: 'string', // 联系电话
    notes: 'string',        // 注意事项
    company: 'string',      // 公司名称
    createTime: 'string',   // 创建时间
    status: 'string',       // 状态：active, inactive, expired
    category: 'string',     // 分类
    tags: 'array',          // 标签
    viewCount: 'number',    // 浏览次数
    purchaseCount: 'number' // 购买次数
  },

  /**
   * 团购订单数据结构
   */
  groupBuyOrder: {
    orderId: 'string',      // 订单ID
    dealId: 'number',       // 团购ID
    dealTitle: 'string',    // 团购标题
    dealImage: 'string',    // 团购图片
    quantity: 'number',     // 购买数量
    totalPrice: 'number',   // 总价
    status: 'string',       // 订单状态：pending, confirmed, completed, cancelled
    contactInfo: 'object',  // 联系信息
    createTime: 'string',   // 创建时间
    updateTime: 'string',   // 更新时间
    notes: 'string'         // 备注
  }
};

/**
 * 错误码定义
 * 为后期错误处理提供参考
 */
export const errorCodes = {
  SUCCESS: 200,                    // 成功
  INVALID_PARAMS: 400,             // 参数错误
  UNAUTHORIZED: 401,               // 未授权
  FORBIDDEN: 403,                  // 禁止访问
  NOT_FOUND: 404,                  // 资源不存在
  INTERNAL_ERROR: 500,             // 服务器内部错误
  DEAL_NOT_FOUND: 1001,            // 团购不存在
  DEAL_EXPIRED: 1002,              // 团购已过期
  DEAL_SOLD_OUT: 1003,             // 团购已售罄
  INSUFFICIENT_BALANCE: 1004,      // 余额不足
  ORDER_NOT_FOUND: 2001,           // 订单不存在
  ORDER_CANNOT_CANCEL: 2002        // 订单无法取消
};

export default groupBuyAPI;
